Webframeworkk/ASP.NET Core/Konfiguration

Dieses Tutorial bietet einen umfassenden Einstieg in das Konfigurationssystem von ASP.NET Core. Es richtet sich an Entwickler, die lernen möchten, wie man Einstellungen und sensible Daten sicher und flexibel verwaltet.

1. Grundlagen der Konfiguration

  • Konfigurationsquellen: JSON-Dateien, Umgebungsvariablen, Kommandozeilenargumente, In-Memory-Objekte, Azure Key Vault, Azure App Configuration, User Secrets.
  • Key-Value-Prinzip: Einstellungen werden als Schlüssel-Wert-Paare gespeichert.

2. Typische Konfigurationsquellen

  • appsettings.json: Standardkonfiguration, nicht-sensible Daten.
  • appsettings.{Environment}.json: Umgebungsabhängige Überschreibungen.
  • Umgebungsvariablen: Für geheime oder umgebungsspezifische Werte.
  • User Secrets: Für lokale Entwicklung, keine Produktion.
  • Azure Key Vault/App Configuration: Für zentrale, sichere Verwaltung und Feature-Flags.

3. Hinzufügen von Konfigurationsquellen

Im Program.cs werden Quellen in der gewünschten Reihenfolge hinzugefügt (letzte gewinnt):

configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
configuration.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
configuration.AddEnvironmentVariables();
configuration.AddUserSecrets<Program>();

4. Zugriff auf Konfiguration

  • IConfiguration: Zentrale Schnittstelle, Zugriff auf Werte per Indexer oder Methoden wie GetSection, GetValue<T>, GetConnectionString.
  • Dependency Injection: IConfiguration wird in Controller/Services per Konstruktor injiziert.
  • Options Pattern: Starke Typisierung durch eigene Options-Klassen und IOptions<T>.

5. Hierarchische Konfiguration

  • JSON-Struktur erlaubt Abschnitte und verschachtelte Werte.
  • Zugriff mit Doppelpunkten, z.B. Logging:LogLevel:Default.
  • Arrays und komplexe Objekte werden unterstützt.

6. Best Practices

  • Layered Configuration: Mehrere Quellen mit klarer Priorität.
  • Trennung sensibler Daten: Secrets nie in Code/Repo, sondern in Key Vault/User Secrets.
  • Validierung: Konfiguration beim Start prüfen.
  • ReloadOnChange: Automatisches Neuladen bei Dateiänderung.

7. Beispiel: Options Pattern

public class MyOptions { public string Option1 { get; set; } public int Option2 { get; set; } }
builder.Services.Configure<MyOptions>(builder.Configuration.GetSection("MyOptions"));
public class MyService {
  private readonly IOptions<MyOptions> _options;
  public MyService(IOptions<MyOptions> options) { _options = options; }
  public void DoSomething() { var opt = _options.Value.Option1; }
}

8. Umgang mit Secrets

  • User Secrets: Für Entwicklung, per dotnet user-secrets CLI verwalten.
  • Azure Key Vault: Für Produktion, zentrale Verwaltung und Rotation.

9. Umgebungsvariablen

  • Doppelte Unterstriche (__) für Hierarchie, z.B. ASPNETCORE_Logging__LogLevel__Default.
  • Überschreiben Werte aus JSON-Dateien.

10. Eigene JSON-Dateien

  • Zusätzliche Konfigurationsdateien für Modularität möglich.
  • Einbinden mit AddJsonFile("customsettings.json", optional: true).

Fazit: Das ASP.NET Core-Konfigurationssystem ist flexibel, sicher und unterstützt Best Practices für moderne Softwareentwicklung. Durch die Kombination verschiedener Quellen, starke Typisierung und sichere Verwaltung sensibler Daten lassen sich robuste und wartbare Anwendungen erstellen.


Kategorien: Keine
Zuletzt aktualisiert am 18.02.2026 22:12